/**
 * Universita' degli Studi di Palermo, 2010-11, License GNU GPL 3 (http://www.gnu.org/licenses/gpl.html)
 */
package org.unipa.botplatform.model;

/**
 * A Planner should modify bot(s) behavior using some kind of reasoning system over the dialogue.
 * @author Giuseppe Miceli
 *
 */
public interface Planner {

	/**
	 * Attaches a bot to the planner so that the planner can change its behavior.
	 * The number of bots managed by a Planner is implementation dependent.
	 * @param bot the Bot to attach to the planner
	 */
	public void attachBot(Bot bot);

	/**
	 * Should modify something in bot behavior according 
	 * to the current dialogue.
	 */
	public void planThrough(String sessionId, Interaction interaction);

	/**
	 * Should reset the planner to default conditions.
	 */
	public void startOver(String sessionId);
}
